package com.library.dto.pojo;

import java.util.List;

import lombok.Data;

@Data
public class PageBean<T> {
	//已知数据
	private int pageNum; //当前页,从请求那边传过来
	private int pagesize; //每页显示的数据条数
	private int totalRecord; //总的记录数,查询数据库等到的数据
	
	//需要计算来的
	private int totalPage; //总页数,通过totalRecord和PageSize计算可以得来
	//开始索引,也就是我们在数据库中要从第几行数据开始拿,有了startIndex和pageSize
	
	//将每页要显示的数据放在list集合中
	private List<T> list;
	
	//分页显示的页数,比如在页面上显示1,2,3,4,5页,start就为1,end就为5
	private int start;
	private int end;
	
	//通过pageNum,pageSize,totalRecord计算得来tatalPage和startIndex
	//构造方法中将pageNum,pageSize,totalRecord获得
	public PageBean(int pageNum,int pageSize,int totalRecord) {
		this.pageNum = pageNum;
		this.pagesize = pageSize;
		this.totalRecord = totalRecord;
		
		
		//total总页数
		if(totalRecord%pageSize==0) {
			//说明整除,正好每页显示pageSize条数据,没有多余一页要显示少于pageSize条数据的
			this.totalPage = totalRecord / pageSize;
		}else {
			//不整除,就要再加一页,来显示多余的数据
			this.totalPage = totalRecord / pageSize + 1;
		}
			
		//显示5页,这里可以自己设置
		this.start = 1;
		this.end = 5;
		
		//显示页数的算法
		if(totalPage <= 5) {
			//总页数都小于5,那么就end为总页数的值
			this.end  = this.totalPage;
		}else {
			//总页数大于5,那么就要根据当前是第几页,来判断start和end为多少
			this.start = pageNum - 2;
			this.end = pageNum + 2;
			
			if(start <= 0) {
				//当前页是第一页,或者第二页,那么就不符合这个规则,
				this.start = 1;
				this.end = 5;
			}
			if(end > this.totalPage) {
				//比如当前页是倒数第2页或者最后一页,也同样不符合上面这个规则
				this.end = totalPage;
				this.start = end - 5;
			}
		}
	}
}
